<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>AXI muckbucket: axi_responder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">AXI muckbucket
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="classaxi__responder-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">axi_responder Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Logic to act as an AXI slave (responder) for all 5 channels.  
 <a href="classaxi__responder.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for axi_responder:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder__inherit__graph.png" border="0" usemap="#axi__responder_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for axi_responder:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder__coll__graph.png" border="0" usemap="#axi__responder_coll__map" alt="Collaboration graph"/></div>
<map name="axi__responder_coll__map" id="axi__responder_coll__map">
<area shape="rect" id="node3" href="classmemory.html" title="Extremely simple memory model with just write() and read() methods. " alt="" coords="173,89,242,115"/>
<area shape="rect" id="node5" href="classaxi__agent__config.html" title="Configuration object for an axi_agent. " alt="" coords="270,89,390,115"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae7375ae280ef650ea7a42cb092741977"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#ae7375ae280ef650ea7a42cb092741977">uvm_component_utils</a> (<a class="el" href="classaxi__responder.html">axi_responder</a>) <a class="el" href="classaxi__if__abstract.html">axi_if_abstract</a> vif</td></tr>
<tr class="separator:ae7375ae280ef650ea7a42cb092741977"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada904275ea4c683de5c2fae9f39d4cd4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a> (string name=&quot;axi_responder&quot;, uvm_component parent=null)</td></tr>
<tr class="memdesc:ada904275ea4c683de5c2fae9f39d4cd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#ada904275ea4c683de5c2fae9f39d4cd4">More...</a><br /></td></tr>
<tr class="separator:ada904275ea4c683de5c2fae9f39d4cd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2200e436e4d6a1a73eebcc284f64c853"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#a2200e436e4d6a1a73eebcc284f64c853">build_phase</a> (uvm_phase phase)</td></tr>
<tr class="memdesc:a2200e436e4d6a1a73eebcc284f64c853"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates the virtual interface.  <a href="#a2200e436e4d6a1a73eebcc284f64c853">More...</a><br /></td></tr>
<tr class="separator:a2200e436e4d6a1a73eebcc284f64c853"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d3514286329a1dd89d9b51ac96cd11c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#a8d3514286329a1dd89d9b51ac96cd11c">connect_phase</a> (uvm_phase phase)</td></tr>
<tr class="memdesc:a8d3514286329a1dd89d9b51ac96cd11c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nothing to connect so doesn't actually do anything except call parent connect phase.  <a href="#a8d3514286329a1dd89d9b51ac96cd11c">More...</a><br /></td></tr>
<tr class="separator:a8d3514286329a1dd89d9b51ac96cd11c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1cbb78601c4535a0ca361989b7ca2077"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#a1cbb78601c4535a0ca361989b7ca2077">run_phase</a> (uvm_phase phase)</td></tr>
<tr class="memdesc:a1cbb78601c4535a0ca361989b7ca2077"><td class="mdescLeft">&#160;</td><td class="mdescRight">Launches channel responder threads and then acts as a dispatcher.  <a href="#a1cbb78601c4535a0ca361989b7ca2077">More...</a><br /></td></tr>
<tr class="separator:a1cbb78601c4535a0ca361989b7ca2077"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40c2090c7f4e386461faceb42937241d"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#a40c2090c7f4e386461faceb42937241d">write_address</a> ()</td></tr>
<tr class="memdesc:a40c2090c7f4e386461faceb42937241d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write Address channel thread.  <a href="#a40c2090c7f4e386461faceb42937241d">More...</a><br /></td></tr>
<tr class="separator:a40c2090c7f4e386461faceb42937241d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf4ec1b477dcf27b80cc9f8bced9ef9c"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#abf4ec1b477dcf27b80cc9f8bced9ef9c">write_data</a> ()</td></tr>
<tr class="memdesc:abf4ec1b477dcf27b80cc9f8bced9ef9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write Data channel thread.  <a href="#abf4ec1b477dcf27b80cc9f8bced9ef9c">More...</a><br /></td></tr>
<tr class="separator:abf4ec1b477dcf27b80cc9f8bced9ef9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6540250bab8663a8723afa67dc222b9"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#ad6540250bab8663a8723afa67dc222b9">write_response</a> ()</td></tr>
<tr class="memdesc:ad6540250bab8663a8723afa67dc222b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write Response channel thread.  <a href="#ad6540250bab8663a8723afa67dc222b9">More...</a><br /></td></tr>
<tr class="separator:ad6540250bab8663a8723afa67dc222b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2bfb80d5d72e298202f4f31f0a2db72"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#ac2bfb80d5d72e298202f4f31f0a2db72">read_address</a> ()</td></tr>
<tr class="memdesc:ac2bfb80d5d72e298202f4f31f0a2db72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read Address channel thread.  <a href="#ac2bfb80d5d72e298202f4f31f0a2db72">More...</a><br /></td></tr>
<tr class="separator:ac2bfb80d5d72e298202f4f31f0a2db72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2944f2ebd74a2fbaef300d355ed917e0"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#a2944f2ebd74a2fbaef300d355ed917e0">read_data</a> ()</td></tr>
<tr class="memdesc:a2944f2ebd74a2fbaef300d355ed917e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read Data channel thread.  <a href="#a2944f2ebd74a2fbaef300d355ed917e0">More...</a><br /></td></tr>
<tr class="separator:a2944f2ebd74a2fbaef300d355ed917e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:aa0d60ec62cfecdc8ae5a366413cf72bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classaxi__agent__config.html">axi_agent_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#aa0d60ec62cfecdc8ae5a366413cf72bc">m_config</a></td></tr>
<tr class="separator:aa0d60ec62cfecdc8ae5a366413cf72bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a540af7edbec8d9caef05a8c7dbccf80a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmemory.html">memory</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#a540af7edbec8d9caef05a8c7dbccf80a">m_memory</a></td></tr>
<tr class="separator:a540af7edbec8d9caef05a8c7dbccf80a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5de9f61d604ae50b06985bfbe252713"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#ae5de9f61d604ae50b06985bfbe252713">writeaddress_mbx</a> = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td></tr>
<tr class="separator:ae5de9f61d604ae50b06985bfbe252713"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4837c1bc74b3adb020f5a15881b5021"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#ad4837c1bc74b3adb020f5a15881b5021">writedata_mbx</a> = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td></tr>
<tr class="separator:ad4837c1bc74b3adb020f5a15881b5021"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a100abd75ccb7b79c770762b023be70ba"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#a100abd75ccb7b79c770762b023be70ba">writeresponse_mbx</a> = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td></tr>
<tr class="separator:a100abd75ccb7b79c770762b023be70ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad289ab8833c1f4c166db9eca4f8d6d80"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#ad289ab8833c1f4c166db9eca4f8d6d80">readaddress_mbx</a> = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td></tr>
<tr class="separator:ad289ab8833c1f4c166db9eca4f8d6d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85c0bd0e1be0de026132cfd51c2c1825"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__responder.html#a85c0bd0e1be0de026132cfd51c2c1825">readdata_mbx</a> = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td></tr>
<tr class="separator:a85c0bd0e1be0de026132cfd51c2c1825"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Logic to act as an AXI slave (responder) for all 5 channels. </p>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00031">31</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a2200e436e4d6a1a73eebcc284f64c853"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void axi_responder::build_phase </td>
          <td>(</td>
          <td class="paramtype">uvm_phase&#160;</td>
          <td class="paramname"><em>phase</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates the virtual interface. </p>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00066">66</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

</div>
</div>
<a class="anchor" id="a8d3514286329a1dd89d9b51ac96cd11c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void axi_responder::connect_phase </td>
          <td>(</td>
          <td class="paramtype">uvm_phase&#160;</td>
          <td class="paramname"><em>phase</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Nothing to connect so doesn't actually do anything except call parent connect phase. </p>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00076">76</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

</div>
</div>
<a class="anchor" id="ada904275ea4c683de5c2fae9f39d4cd4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">axi_responder::new </td>
          <td>(</td>
          <td class="paramtype">string&#160;</td>
          <td class="paramname"><em>name</em> = <code>&quot;axi_responder&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uvm_component&#160;</td>
          <td class="paramname"><em>parent</em> = <code>null</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>Doesn't actually do anything except call parent constructor </p>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00061">61</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

</div>
</div>
<a class="anchor" id="ac2bfb80d5d72e298202f4f31f0a2db72"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_responder::read_address </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read Address channel thread. </p>
<p>Does nothing. The monitor handles taking AXI read data transfers and creating a read data packet that gets sent to the read data channel thread. </p>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00274">274</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>References <a class="el" href="axi__agent__config_8svh_source.html#l00064">axi_agent_config::arready_toggle_pattern</a>, and <a class="el" href="axi__responder_8svh_source.html#l00035">m_config</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00090">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_ac2bfb80d5d72e298202f4f31f0a2db72_icgraph.png" border="0" usemap="#classaxi__responder_ac2bfb80d5d72e298202f4f31f0a2db72_icgraph" alt=""/></div>
<map name="classaxi__responder_ac2bfb80d5d72e298202f4f31f0a2db72_icgraph" id="classaxi__responder_ac2bfb80d5d72e298202f4f31f0a2db72_icgraph">
<area shape="rect" id="node2" href="classaxi__responder.html#a1cbb78601c4535a0ca361989b7ca2077" title="Launches channel responder threads and then acts as a dispatcher. " alt="" coords="189,5,319,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a2944f2ebd74a2fbaef300d355ed917e0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_responder::read_data </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read Data channel thread. </p>
<ol type="1">
<li>Deassert rvalid</li>
<li>wait for tlm packet (responder packet from <a class="el" href="classaxi__monitor.html" title="monitors all 5 channels for activity ">axi_monitor</a>)</li>
<li>loop through data</li>
<li>if ready and valid, wait X clocks where x&gt;=0, then check for any more queued items</li>
<li>if avail, then fetch and goto 'Loop through data' step.</li>
<li>if no items to be driven on next clk, drive all read data signals low and goto 'Wait for TLM item in mailbox' step. </li>
</ol>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00288">288</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>References <a class="el" href="axi__seq__item_8svh_source.html#l00043">axi_seq_item::addr</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00091">axi_agent_config::axi_incompatible_rvalid_toggling_mode</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00048">axi_seq_item::burst_size</a>, <a class="el" href="axi__pkg_8sv_source.html#l00320">calculate_axlen()</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00097">axi_agent_config::clks_without_rvalid_or_rready_max</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00288">axi_seq_item::convert2string()</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00492">axi_seq_item::get_beat_N_data()</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00045">axi_seq_item::len</a>, <a class="el" href="axi__responder_8svh_source.html#l00035">m_config</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00081">axi_agent_config::max_clks_between_r_transfers</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00080">axi_agent_config::min_clks_between_r_transfers</a>, <a class="el" href="axi__pkg_8sv_source.html#l00206">axi_seq_item_r_vector_s::rdata</a>, <a class="el" href="axi__responder_8svh_source.html#l00042">readdata_mbx</a>, <a class="el" href="axi__pkg_8sv_source.html#l00210">axi_seq_item_r_vector_s::rid</a>, <a class="el" href="axi__pkg_8sv_source.html#l00208">axi_seq_item_r_vector_s::rlast</a>, <a class="el" href="axi__pkg_8sv_source.html#l00209">axi_seq_item_r_vector_s::rvalid</a>, and <a class="el" href="axi__seq__item_8svh_source.html#l00052">axi_seq_item::valid</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00090">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_a2944f2ebd74a2fbaef300d355ed917e0_cgraph.png" border="0" usemap="#classaxi__responder_a2944f2ebd74a2fbaef300d355ed917e0_cgraph" alt=""/></div>
<map name="classaxi__responder_a2944f2ebd74a2fbaef300d355ed917e0_cgraph" id="classaxi__responder_a2944f2ebd74a2fbaef300d355ed917e0_cgraph">
<area shape="rect" id="node2" href="axi__pkg_8sv.html#afbfbf7a50bf6dabae3804e39d05434b1" title="calculate awlen or arlen " alt="" coords="482,13,594,39"/>
<area shape="rect" id="node4" href="classaxi__seq__item.html#a510d32edb7887045a31a308bc7198c46" title="Convert item&#39;s variable into one printable string. " alt="" coords="221,51,411,78"/>
<area shape="rect" id="node5" href="classaxi__seq__item.html#acde9a137c164b77ec0846fe343870215" title="return beat values for write data and read data channels " alt="" coords="237,103,395,144"/>
<area shape="rect" id="node3" href="axi__pkg_8sv.html#a1bb88ba6ed9a3a081a64f90042a681b5" title="calculate how unaligned the address is from the burst size " alt="" coords="669,5,820,47"/>
<area shape="rect" id="node6" href="axi__pkg_8sv.html#a269e42497226a3a0def0fc1bfdd7d22a" title="return byte lanes that contain valid data " alt="" coords="459,110,617,137"/>
<area shape="rect" id="node7" href="axi__pkg_8sv.html#a6c8ade980c77973114ddfd403d25bc23" title="calculate burst_size aligned address " alt="" coords="665,81,824,123"/>
<area shape="rect" id="node8" href="axi__pkg_8sv.html#a4af175634a55ae773681009062989a5d" title="calculate bus&#45;siz aligned address " alt="" coords="669,147,820,188"/>
</map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_a2944f2ebd74a2fbaef300d355ed917e0_icgraph.png" border="0" usemap="#classaxi__responder_a2944f2ebd74a2fbaef300d355ed917e0_icgraph" alt=""/></div>
<map name="classaxi__responder_a2944f2ebd74a2fbaef300d355ed917e0_icgraph" id="classaxi__responder_a2944f2ebd74a2fbaef300d355ed917e0_icgraph">
<area shape="rect" id="node2" href="classaxi__responder.html#a1cbb78601c4535a0ca361989b7ca2077" title="Launches channel responder threads and then acts as a dispatcher. " alt="" coords="221,5,351,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a1cbb78601c4535a0ca361989b7ca2077"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_responder::run_phase </td>
          <td>(</td>
          <td class="paramtype">uvm_phase&#160;</td>
          <td class="paramname"><em>phase</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Launches channel responder threads and then acts as a dispatcher. </p>
<p>After launching 5 different threads (one for each channel), this task acts as a dispatcher. It waits for TLM packets and then stuffs them into the appropriate thread's mailbox. IE: If it's an AXI write packet then it puts the packet into the write_address's mailbox so it can handle it. It the waits for the next TLM packet. NOTE: it does not wait for the other thread to finish processing the packet, it just puts it in the mailbox and then immediately waits for the next packet. </p>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00090">90</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>References <a class="el" href="axi__seq__item_8svh_source.html#l00071">axi_seq_item::cmd</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00288">axi_seq_item::convert2string()</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00059">e_READ_DATA</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00057">e_WRITE</a>, <a class="el" href="axi__responder_8svh_source.html#l00274">read_address()</a>, <a class="el" href="axi__responder_8svh_source.html#l00288">read_data()</a>, <a class="el" href="axi__responder_8svh_source.html#l00042">readdata_mbx</a>, <a class="el" href="axi__responder_8svh_source.html#l00134">write_address()</a>, <a class="el" href="axi__responder_8svh_source.html#l00158">write_data()</a>, <a class="el" href="axi__responder_8svh_source.html#l00199">write_response()</a>, and <a class="el" href="axi__responder_8svh_source.html#l00038">writeaddress_mbx</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_a1cbb78601c4535a0ca361989b7ca2077_cgraph.png" border="0" usemap="#classaxi__responder_a1cbb78601c4535a0ca361989b7ca2077_cgraph" alt=""/></div>
<map name="classaxi__responder_a1cbb78601c4535a0ca361989b7ca2077_cgraph" id="classaxi__responder_a1cbb78601c4535a0ca361989b7ca2077_cgraph">
<area shape="rect" id="node2" href="classaxi__seq__item.html#a510d32edb7887045a31a308bc7198c46" title="Convert item&#39;s variable into one printable string. " alt="" coords="401,298,591,325"/>
<area shape="rect" id="node3" href="classaxi__responder.html#ac2bfb80d5d72e298202f4f31f0a2db72" title="Read Address channel thread. " alt="" coords="200,163,336,204"/>
<area shape="rect" id="node4" href="classaxi__responder.html#a2944f2ebd74a2fbaef300d355ed917e0" title="Read Data channel thread. " alt="" coords="184,111,352,138"/>
<area shape="rect" id="node11" href="classaxi__responder.html#a40c2090c7f4e386461faceb42937241d" title="Write Address channel thread. " alt="" coords="199,293,337,335"/>
<area shape="rect" id="node12" href="classaxi__responder.html#abf4ec1b477dcf27b80cc9f8bced9ef9c" title="Write Data channel thread. " alt="" coords="183,359,353,386"/>
<area shape="rect" id="node13" href="classaxi__responder.html#ad6540250bab8663a8723afa67dc222b9" title="Write Response channel thread. " alt="" coords="199,228,337,269"/>
<area shape="rect" id="node5" href="axi__pkg_8sv.html#afbfbf7a50bf6dabae3804e39d05434b1" title="calculate awlen or arlen " alt="" coords="662,141,774,167"/>
<area shape="rect" id="node7" href="classaxi__seq__item.html#acde9a137c164b77ec0846fe343870215" title="return beat values for write data and read data channels " alt="" coords="417,75,575,116"/>
<area shape="rect" id="node6" href="axi__pkg_8sv.html#a1bb88ba6ed9a3a081a64f90042a681b5" title="calculate how unaligned the address is from the burst size " alt="" coords="849,136,1000,177"/>
<area shape="rect" id="node8" href="axi__pkg_8sv.html#a269e42497226a3a0def0fc1bfdd7d22a" title="return byte lanes that contain valid data " alt="" coords="639,78,797,105"/>
<area shape="rect" id="node9" href="axi__pkg_8sv.html#a6c8ade980c77973114ddfd403d25bc23" title="calculate burst_size aligned address " alt="" coords="845,71,1004,112"/>
<area shape="rect" id="node10" href="axi__pkg_8sv.html#a4af175634a55ae773681009062989a5d" title="calculate bus&#45;siz aligned address " alt="" coords="849,5,1000,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ae7375ae280ef650ea7a42cb092741977"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">axi_responder::uvm_component_utils </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classaxi__responder.html">axi_responder</a>&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a40c2090c7f4e386461faceb42937241d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_responder::write_address </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write Address channel thread. </p>
<p>Actually does almost nothing. The monitor handles taking AXI write data and storing it into memory and loadable logic in the axi_if handles awready. This task is basically part of a chain that guarantees that a write response won't be sent back before both write address and write data have been received. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000013">Todo:</a></b></dt><dd>: clean up this task. Destroy that chain. </dd></dl>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00134">134</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>References <a class="el" href="axi__agent__config_8svh_source.html#l00062">axi_agent_config::awready_toggle_pattern</a>, <a class="el" href="axi__responder_8svh_source.html#l00035">m_config</a>, <a class="el" href="axi__responder_8svh_source.html#l00038">writeaddress_mbx</a>, and <a class="el" href="axi__responder_8svh_source.html#l00039">writedata_mbx</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00090">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_a40c2090c7f4e386461faceb42937241d_icgraph.png" border="0" usemap="#classaxi__responder_a40c2090c7f4e386461faceb42937241d_icgraph" alt=""/></div>
<map name="classaxi__responder_a40c2090c7f4e386461faceb42937241d_icgraph" id="classaxi__responder_a40c2090c7f4e386461faceb42937241d_icgraph">
<area shape="rect" id="node2" href="classaxi__responder.html#a1cbb78601c4535a0ca361989b7ca2077" title="Launches channel responder threads and then acts as a dispatcher. " alt="" coords="192,5,321,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="abf4ec1b477dcf27b80cc9f8bced9ef9c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_responder::write_data </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write Data channel thread. </p>
<p>Actually does almost nothing. The monitor handles taking AXI write data and storing it into memory and loadable logic in the axi_if handles awready. This task is basically part of a chain that guarantees that a write response won't be sent back before both write address and write data have been received. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000014">Todo:</a></b></dt><dd>: clean up this task. Destroy that chain. </dd></dl>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00158">158</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>References <a class="el" href="axi__seq__item_8svh_source.html#l00288">axi_seq_item::convert2string()</a>, <a class="el" href="axi__responder_8svh_source.html#l00035">m_config</a>, <a class="el" href="axi__pkg_8sv_source.html#l00144">axi_seq_item_w_vector_s::wlast</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00063">axi_agent_config::wready_toggle_pattern</a>, <a class="el" href="axi__responder_8svh_source.html#l00039">writedata_mbx</a>, and <a class="el" href="axi__responder_8svh_source.html#l00040">writeresponse_mbx</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00090">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_abf4ec1b477dcf27b80cc9f8bced9ef9c_cgraph.png" border="0" usemap="#classaxi__responder_abf4ec1b477dcf27b80cc9f8bced9ef9c_cgraph" alt=""/></div>
<map name="classaxi__responder_abf4ec1b477dcf27b80cc9f8bced9ef9c_cgraph" id="classaxi__responder_abf4ec1b477dcf27b80cc9f8bced9ef9c_cgraph">
<area shape="rect" id="node2" href="classaxi__seq__item.html#a510d32edb7887045a31a308bc7198c46" title="Convert item&#39;s variable into one printable string. " alt="" coords="224,5,413,32"/>
</map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_abf4ec1b477dcf27b80cc9f8bced9ef9c_icgraph.png" border="0" usemap="#classaxi__responder_abf4ec1b477dcf27b80cc9f8bced9ef9c_icgraph" alt=""/></div>
<map name="classaxi__responder_abf4ec1b477dcf27b80cc9f8bced9ef9c_icgraph" id="classaxi__responder_abf4ec1b477dcf27b80cc9f8bced9ef9c_icgraph">
<area shape="rect" id="node2" href="classaxi__responder.html#a1cbb78601c4535a0ca361989b7ca2077" title="Launches channel responder threads and then acts as a dispatcher. " alt="" coords="224,5,353,47"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ad6540250bab8663a8723afa67dc222b9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_responder::write_response </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write Response channel thread. </p>
<ol type="1">
<li>Deassert bvalid</li>
<li>Wait for TLM item in mailbox</li>
<li>Initialize variables</li>
<li>Write out</li>
<li>if ready and valid, wait X clocks where x&gt;=0, then check for any more queued items</li>
<li>if avail, then fetch and goto 'Initialize variables' step.</li>
<li>if no items to be driven on next clk, drive all write response signals low and goto 'Wait for TLM item in mailbox' step. \todo: response values are hardcoded. Get from response seq? </li>
</ol>

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00199">199</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>References <a class="el" href="axi__uvm__pkg_8sv_source.html#l00039">ADDR_WIDTH</a>, <a class="el" href="axi__pkg_8sv_source.html#l00163">axi_seq_item_b_vector_s::bid</a>, <a class="el" href="axi__pkg_8sv_source.html#l00164">axi_seq_item_b_vector_s::bresp</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00288">axi_seq_item::convert2string()</a>, <a class="el" href="axi__responder_8svh_source.html#l00035">m_config</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00075">axi_agent_config::max_clks_between_b_transfers</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00074">axi_agent_config::min_clks_between_b_transfers</a>, and <a class="el" href="axi__responder_8svh_source.html#l00040">writeresponse_mbx</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00090">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_ad6540250bab8663a8723afa67dc222b9_cgraph.png" border="0" usemap="#classaxi__responder_ad6540250bab8663a8723afa67dc222b9_cgraph" alt=""/></div>
<map name="classaxi__responder_ad6540250bab8663a8723afa67dc222b9_cgraph" id="classaxi__responder_ad6540250bab8663a8723afa67dc222b9_cgraph">
<area shape="rect" id="node2" href="classaxi__seq__item.html#a510d32edb7887045a31a308bc7198c46" title="Convert item&#39;s variable into one printable string. " alt="" coords="192,13,381,39"/>
</map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__responder_ad6540250bab8663a8723afa67dc222b9_icgraph.png" border="0" usemap="#classaxi__responder_ad6540250bab8663a8723afa67dc222b9_icgraph" alt=""/></div>
<map name="classaxi__responder_ad6540250bab8663a8723afa67dc222b9_icgraph" id="classaxi__responder_ad6540250bab8663a8723afa67dc222b9_icgraph">
<area shape="rect" id="node2" href="classaxi__responder.html#a1cbb78601c4535a0ca361989b7ca2077" title="Launches channel responder threads and then acts as a dispatcher. " alt="" coords="192,5,321,47"/>
</map>
</div>
</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="aa0d60ec62cfecdc8ae5a366413cf72bc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classaxi__agent__config.html">axi_agent_config</a> axi_responder::m_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00035">35</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__agent_8svh_source.html#l00072">axi_agent::build_phase()</a>, <a class="el" href="axi__responder_8svh_source.html#l00274">read_address()</a>, <a class="el" href="axi__responder_8svh_source.html#l00288">read_data()</a>, <a class="el" href="axi__responder_8svh_source.html#l00134">write_address()</a>, <a class="el" href="axi__responder_8svh_source.html#l00158">write_data()</a>, and <a class="el" href="axi__responder_8svh_source.html#l00199">write_response()</a>.</p>

</div>
</div>
<a class="anchor" id="a540af7edbec8d9caef05a8c7dbccf80a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmemory.html">memory</a> axi_responder::m_memory</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00036">36</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__agent_8svh_source.html#l00072">axi_agent::build_phase()</a>.</p>

</div>
</div>
<a class="anchor" id="ad289ab8833c1f4c166db9eca4f8d6d80"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_responder::readaddress_mbx = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00041">41</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

</div>
</div>
<a class="anchor" id="a85c0bd0e1be0de026132cfd51c2c1825"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_responder::readdata_mbx = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00042">42</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00288">read_data()</a>, and <a class="el" href="axi__responder_8svh_source.html#l00090">run_phase()</a>.</p>

</div>
</div>
<a class="anchor" id="ae5de9f61d604ae50b06985bfbe252713"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_responder::writeaddress_mbx = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00038">38</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00090">run_phase()</a>, and <a class="el" href="axi__responder_8svh_source.html#l00134">write_address()</a>.</p>

</div>
</div>
<a class="anchor" id="ad4837c1bc74b3adb020f5a15881b5021"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_responder::writedata_mbx = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00039">39</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00134">write_address()</a>, and <a class="el" href="axi__responder_8svh_source.html#l00158">write_data()</a>.</p>

</div>
</div>
<a class="anchor" id="a100abd75ccb7b79c770762b023be70ba"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_responder::writeresponse_mbx = <a class="el" href="classaxi__responder.html#ada904275ea4c683de5c2fae9f39d4cd4">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__responder_8svh_source.html#l00040">40</a> of file <a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__responder_8svh_source.html#l00158">write_data()</a>, and <a class="el" href="axi__responder_8svh_source.html#l00199">write_response()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>tb/<a class="el" href="axi__responder_8svh_source.html">axi_responder.svh</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
